//通过一个按键实现LED的左移或右移
#include <REGX52.H>
#include <INTRINS.H>//_crol_和_cror_
#include "timer0.h"
#include "key.h"

unsigned char KeyNum;
unsigned char LEDMode;

void main()
{
	P2=0xFE;//LED1亮
	Timer0_Init();
	while(1)
	{
		KeyNum=Key();
		if(KeyNum)
		{
			if(KeyNum==1)
			{
				LEDMode++;
				if(LEDMode>=2)
					LEDMode=0;
			}
		}
	}
}

//中断函数
void Timer0_Routine() interrupt 1
{
	static unsigned int T0Count;//如果执行完更高位的中断函数，返回的是非0数

	TL0 = 0x66;				//设置定时初始值
	TH0 = 0xFC;				//设置定时初始值
	T0Count++;
	if(T0Count>=500)//每隔半秒执行一次LED状态取反
	{
		T0Count=0;
		if(LEDMode==0)
			P2=_crol_(P2,1);
		if(LEDMode==1)
			P2=_cror_(P2,1);
	}
}


//按键控制LED模式

//定时器T0，工作方式1
//void Timer0_Init()
//{
//	//TMOD=0x01;//下面是优化后的
//	TMOD&=0xF0;
//	TMOD|=0x01;
//	TR0=1;//是否开启中断，1为开启
//	TF0=0;//中断溢出标志位（可以不写这句，因为默认为0）
//	//赋初值
//	TH0=64535/256;//定时器：1ms
//	TL0=64535%256;
//	//允许中断以及优先级
//	ET0=1;
//	EA=1;
//	PT0=0;
//}

